import distutils.spawn
import hashlib
import os
-import subprocess
import sys
import tarfile
import shutil
-f = open('src/snapshots.txt')
-lines = f.readlines()
+try:
+ from urllib.request import urlopen
+except ImportError:
+ # We are in python2
+ from urllib2 import urlopen as urlopen2
+ from contextlib import closing
+ urlopen = lambda url: closing(urlopen2(url))
+
+with open('src/snapshots.txt') as f:
+ lines = f.readlines()
date = lines[0]
linux32 = lines[1]
else:
raise Exception("no snapshot for the triple: " + triple)
-platform, hash = me.strip().split(' ')
+platform, hash = me.strip().split()
tarball = 'cargo-nightly-' + triple + '.tar.gz'
url = 'https://static-rust-lang-org.s3.amazonaws.com/cargo-dist/' + date.strip() + '/' + tarball
if os.path.isdir(dst):
shutil.rmtree(dst)
-ret = subprocess.call(["curl", "-o", dl_path, url])
-if ret != 0:
- raise Exception("failed to fetch url")
-h = hashlib.sha1(open(dl_path, 'rb').read()).hexdigest()
-if h != hash:
- raise Exception("failed to verify the checksum of the snapshot")
+with urlopen(url) as in_file:
+ data = in_file.read()
+ h = hashlib.sha1(data).hexdigest()
+ if h != hash:
+ raise Exception("failed to verify the checksum of the snapshot")
+ with open(dl_path, 'wb') as out_file:
+ out_file.write(data)
-tar = tarfile.open(dl_path)
-for p in tar.getnames():
- name = p.replace("cargo-nightly-" + triple + "/", "", 1)
- fp = os.path.join(dst, name)
- print("extracting " + p)
- tar.extract(p, dst)
- tp = os.path.join(dst, p)
- if os.path.isdir(tp) and os.path.exists(fp):
- continue
- shutil.move(tp, fp)
-tar.close()
+with tarfile.open(dl_path) as tar:
+ for p in tar.getnames():
+ name = p.replace("cargo-nightly-" + triple + "/", "", 1)
+ fp = os.path.join(dst, name)
+ print("extracting " + p)
+ tar.extract(p, dst)
+ tp = os.path.join(dst, p)
+ if os.path.isdir(tp) and os.path.exists(fp):
+ continue
+ shutil.move(tp, fp)
shutil.rmtree(os.path.join(dst, 'cargo-nightly-' + triple))